<?php
/**
 * Created by PhpStorm.
 * User: z
 * Date: 14-8-30
 * Time: 下午6:53
 */
class Payway
{
    /**
     * 处理显示查询
     */
    static function get_payway_lists(array $condtion = NULL)
    {
        $reslut = self::do_select($condtion);
        return self::cover_payway_data($reslut);
    }

    /**
     * 处理对数据库的查询
     */
    static function do_select(array $condtion = NULL)
    {
        $reslut = DB::select('id','paywayname','status')->from('payways');

        if(isset($condtion['id']))
        {
            $reslut = $reslut->where('id','=',$condtion['id']);
        }

        if(isset($condtion['paywayname']))
        {
            $reslut = $reslut->where('paywayname','=',$condtion['paywayname']);
        }

        if(isset($condtion['status']))
        {
            $reslut = $reslut->where('status','=',$condtion['status']);
        }

        return $reslut = $reslut->execute('newerp')->as_array();
    }

    /**
     * 转换数据到显示数据
     */
    protected static function cover_payway_data(array $database_datas = NULL)
    {
        if(empty($database_datas))
        {
            return NULL;
        }

        foreach($database_datas as $key => $data)
        {
            if($data['status'] == 0)
            {
                $database_datas[$key]['status_string'] = '激活';
            }
            elseif($data['status'] == 1)
            {
                $database_datas[$key]['status_string'] = '停用';
            }
            else
            {
                $database_datas[$key]['status_string'] = '未知';
            }
        }

        return $database_datas;
    }



    /**
     * 处理更新信息
     * 更新名称
     * 更新状态
     * @param array $update_datas
     * @return null $ok
     */
    static function do_update(array $update_datas = NULL)
    {
        $update_id = NULL;
        if(isset($update_datas['id']))
        {
            $exist_id = self::exist_id($update_datas['id']);
            if($exist_id and isset($exist_id['id']))
            {
                $update_id = $exist_id['id'];
            }
        }

        if(empty($update_id))
        {
            return NULL;
        }

        $payway_update_dates = array();
        if(isset($update_datas['paywayname']))
        {
            $payway_update_dates['paywayname'] = $update_datas['paywayname'];
        }
        if(isset($update_datas['status']))
        {
            $payway_update_dates['status'] = $update_datas['status'];
        }
        if(empty($payway_update_dates))
        {
            return NULL;
        }
        $payway_update_dates['updatetime'] = date('Y-m-d H:i:s');
        $ok = DB::update('payways')->set($payway_update_dates)->where('id','=',$update_id);
        $ok = $ok->execute('newerp');

        return $ok;
    }


    /**
     * 查询指定的ID的信息是否存在
     */
    static function exist_id($id=NULL)
    {
        $exist_id = self::do_select(array('id'=>$id));
        return isset($exist_id[0]['id'])?$exist_id[0]['id']:NULL;
    }

    /**
     * 获取老ERP的付款方式
     */
    static function get_payway_erp()
    {
        $re = DB::select('id',array('type','paywayname'))
            ->from('erp_pay_type')
            ->execute('readonlyerp')
            ->as_array();
        return $re;
    }

    /**
     * 单条插入付款方式
     * @param array $insert_data
     * @return null int
     */
    static function insert_payway(array $insert_data=NULL)
    {
        $payway_insert = array();
        if(isset($insert_data['paywayname']))
        {
            $payway_insert['paywayname'] = $insert_data['paywayname'];
        }
        if(empty($payway_insert))
        {
            return NULL;
        }
        $time = date('Y-m-d H:i:s');
        $payway_insert['status'] = 0;
        $payway_insert['createtime'] = $time;
        $payway_insert['updatetime'] = $time;

        $ok = DB::insert('payways',array_keys($payway_insert))->values(array_values($payway_insert));
        $ok = $ok->execute('newerp');

        return isset($ok[0])?$ok[0]:NULL;
    }

    /**
     * 插入进销存的付款方式
     * @param array $insert_data 插入的数据的数组信息
     * @return null
     */
    static function insert_payway_newerp_bat(array $insert_data=NULL)
    {
        if(empty($insert_data))
        {
            return NULL;
        }

        $datas = array_values($insert_data);

        /**
         * 必须要有
         */
        if(isset($data[0]['paywayname']))
        {
            return NULL;
        }

        /**
         * 插入数据库，付款方式
         */
        $inser_string = '';

        $status = 0;
        $updatetime = $createtime = date('Y-m-d H:i:s');

        $insert_data_string = "";$id_flag = false;

        foreach($datas as $data){

            if(isset($data['id']))
            {
                $id_tmp = $data['id'];
            }

            $paywayname_tmp = isset($data['paywayname'])?$data['paywayname']:'';

            $insert_data_string .= $insert_data_string?',(':'(';

            /**
             * 字段数据
             * id
             * paywayid
             * paywayname
             * status
             *
             * createtime
             * updatetime
             */
            if(isset($id_tmp))
            {
                $id_flag = true;
                $insert_data_string .= '"'.$id_tmp.'",';
            }
            $insert_data_string .= '"'.$paywayname_tmp.'",';
            $insert_data_string .= '"'.$status.'",';
            $insert_data_string .= '"'.$createtime.'",';
            $insert_data_string .= '"'.$updatetime.'"';

            $insert_data_string .= ')';

        }
        if($insert_data_string)
        {
            $insert_head_string = " insert into payways (";
            if($id_flag)
            {
                $insert_head_string .= " id,";
            }
            $insert_head_string .= " paywayname,status,createtime,updatetime) values ";

            echo $insert_head_string.$insert_data_string;

            list($ids,$rows) = DB::query(Database::INSERT,$insert_head_string.$insert_data_string)->execute('newerp');

            return $rows;
        }
        return null;

    }

    /**
     * 获取属于使用状态的付款方式
     */
    public static function get_payway_lists_active()
    {
         $re = DB::select('id','paywayname')
             ->from('payways')
             ->where('status','=','0')
             ->execute('newerp')
             ->as_array();
         return $re;
    }

}